package it.gat.controller;

import it.gat.controller.resource.ResourceFactory;
import it.gat.model.Cliente;
import it.gat.model.Contratto;
import it.gat.model.DispositivoSostituito;
import it.gat.model.RapportoIntervento;
import it.gat.model.StatoTicket;
import it.gat.model.Ticket;
import it.gat.webservice.string.Resource;

import java.util.Arrays;
import java.util.List;

public class RapportoInterventoController {
	
	public RapportoIntervento getRapportoIntervento(int id)
	{
		return ResourceFactory.get(Resource.RAPPORTOINTERVENTO,id,RapportoIntervento.class); 
	}
	
	public List<RapportoIntervento> getRapportoInterventoList()
	{
		return Arrays.asList(ResourceFactory.get(Resource.RAPPORTOINTERVENTO,Resource.LISTAURI,RapportoIntervento[].class));
	}
	
	public List<RapportoIntervento> getRapportoInterventoCliente(Cliente cliente)
	{
		return Arrays.asList(ResourceFactory.get(Resource.RAPPORTOINTERVENTOCLIENTE,cliente.getIdCliente(),RapportoIntervento[].class));
	}
	
	public RapportoIntervento insertRapportoIntervento(RapportoIntervento rapportoIntervento)
	{
		TicketController tc = new TicketController();
		rapportoIntervento.getTicket().setStato(StatoTicket.CHIUSO);
		tc.updateTicket(rapportoIntervento.getTicket());
		ContrattoController cc = new ContrattoController();
		Contratto contratto = cc.getContrattoAttivo(rapportoIntervento.getTicket().getCliente());
		if (contratto!=null)
		{
			contratto.setOreUsufruite(contratto.getOreUsufruite()+rapportoIntervento.getDurataIntervento());
			cc.updateContratto(contratto);
		}
		return ResourceFactory.post(Resource.RAPPORTOINTERVENTO, rapportoIntervento,RapportoIntervento.class);
	}
	
	public void updateRapportoIntervento(RapportoIntervento rapportoIntervento,Ticket ticket)
	{
		ResourceFactory.put(Resource.RAPPORTOINTERVENTO, rapportoIntervento.getIdRapportoIntervento(),rapportoIntervento);
		TicketController tc = new TicketController();
		ticket.setStato(StatoTicket.CHIUSO);
		tc.updateTicket(ticket);
		ContrattoController cc = new ContrattoController();
	}
	
	
	public void deleteRapportoIntervento(RapportoIntervento rapportoIntervento)
	{
		if (rapportoIntervento.getDispositiviSostituiti()!=null)
		{
			for(DispositivoSostituito dispositivo : rapportoIntervento.getDispositiviSostituiti())
			{
				DispositivoSostituitoController dsc = new DispositivoSostituitoController();
				dsc.deleteDispositivoSostituito(dispositivo.getIdDispositivoSostituito());
			}
		}
		ResourceFactory.delete(Resource.RAPPORTOINTERVENTO,rapportoIntervento.getIdRapportoIntervento());
	}

}
